package main

import (
	"errors"
	"fmt"
)

// 使用data前应判断长度是否合法
func decode(data []byte) bool {
	if len(data) == 6 {
		if data[0] == 'F' && data[1] == 'U' && data[2] == 'Z' && data[3] == 'Z' && data[4] == 'E' && data[5] == 'R' {
			fmt.Println("Good")
			return true
		}
	}
	return false
}

// 在进行make分配内存时，需要对外部可控的长度进行校验，防止程序panic。
func parse(lenControlByUser int, data []byte) ([]byte, error) {
	size := lenControlByUser
	//限制外部可控的长度大小范围
	if size > 64*1024*1024 {
		return nil, errors.New("value too large")
	}
	buffer := make([]byte, size)
	copy(buffer, data)
	return buffer, nil
}

// 禁止重复释放channel
//func foo(c chan int) {
//	defer close(c) // 使用defer延迟关闭channel
//	err := processBusiness()
//	if err != nil {
//		c <- 0
//		return
//	}
//	c <- 1
//}
